<template>
    <view>
        <view class="goods-list">
            <!-- block组件无法添加@click处理函数 -->
            <view v-for="(goods, i) in goodsList" :key="i" @click="gotoDetail(goods)">
                <my_goods  :goods="goods"></my_goods>
            </view>
        </view>
    </view>
</template>

<script>
    export default {
        
        
        data() {
            return {
                // 请求参数对象
                queryObj:{
                    query:'',
                    cid:'',
                    pagenum:1,
                    pagesize:10,
                },
                goodsList:[],
                total:0  ,
                // 节流阀
                isloading:false
                
            };
        },
        onLoad(options){
            this.queryObj.query = options.query || ''
            this.queryObj.cid = options.cid || ''
             console.log(this.queryObj)
            this.getGoodsList()
        },
        methods:{
            //获取商品列表数据的方法
                
            async getGoodsList(cb){
                // 打开节流阀
                this.isloading = true
                // 发起请求
                const {data : res } = await uni.$http.get('https://api-hmugo-web.itheima.net/api/public/v1/goods/search?', this.queryObj)
                // 关闭节流阀
                this.isloading = false
                // 如果 cb 存在，就进行调用
                cb && cb()
                if (res.meta.status !== 200) return uni.$showMsg()
                
                this.goodsList = [...this.goodsList, ...res.message.goods]
                this.total = res.message.total
            },
            gotoDetail(goods){
                uni.navigateTo({
                    url:'/subpkg/good_detail/good_detail?goods_id=' +goods.goods_id
                })
            }
        },
        // 上拉触底事件处理
        onReachBottom(){
            // 判断数据是否已经全部加载
            if (this.queryObj.pagenum * this.queryObj.pagesize >= this.total ) return uni.$showMsg('数据加载完毕') 
            // 判断节流阀是否关闭，如果关闭，就return出去
            if (this.isloading) return
            // 让页码自加一
            this.queryObj.pagenum++
            // 重新调用方法，获取数据
            this.getGoodsList()
        },
        onPullDownRefresh(){
            // 重置关键数据
            this.queryObj.pagenum = 1
            this.total = 0 
            this.isloading = false
            this.goodsList = []
            // 重新发起数据请求,并停止下拉刷新功能
            this.getGoodsList(() => uni.stopPullDownRefresh())
            
        }
    }
</script>

<style lang="scss">

</style>
